package com.yun.studyprovider.conf;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DirectRabbitConfig {

    //队列 起名：StudyDirectQueue

    /**
     * Direct 创建直连交换机
     * 构建参数：
     *      name:交换机名称
     *      durable：如果我们声明一个持久队列，则为true（该队列将在服务器重启后保留下来）
     *      exclusive: 如果我们声明一个独占队列，则为true（该队列仅由声明者的连接使用）默认为false
     *      autoDelete：如果为true时，服务器不在使用该交换机时，删除该交换机
     *      arguments：用于声明队列的参数
     */
    @Bean
    public Queue studyDirectQueue(){
        return new Queue("StudyDirectQueue",true);
    }

    /**
     * Direct 创建直连交换机
     * 构建参数：
     *      name:交换机名称
     *      durable：是否持久化 ，如果为true时，该交换将在服务器重新启动后存活
     *      autoDelete：如果为true时，服务器不在使用该交换机时，删除该交换机
     *      arguments：用于声明该交换机的参数
     */
    @Bean
    public DirectExchange studyDirectExchange(){
        return new DirectExchange("StudyDirectExchange",true,false);
    }

    //将队列绑定到交换机 并设置路由key:StudyDirectRouting
    @Bean
    public Binding bindingDirect(){
        return BindingBuilder.bind(studyDirectQueue()).to(studyDirectExchange()).with("StudyDirectRouting");
    }

    @Bean
    DirectExchange lonelyDirectExchange() {
        return new DirectExchange("lonelyDirectExchange");
    }
}
